package com.credithc.signature.lanmaostorage.cron;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.io.File;
import java.util.Calendar;
import java.util.Date;

@Component
@Async
@Slf4j
public class FileDelCron {

    @Value("${storage.path.cont:/data/openapi/contfile/}")
    private String contPath;
    @Value("${storage.path.image:/data/openapi/imagefile/}")
    private String imgPath;
    @Value("${storage.path.temp:/data/openapi/temp/}")
    private String contTemPath;

    /**
     * 每天凌晨定时删除一周前的临时数据
     */
    @Scheduled(cron = "0 0 0 * * ?")
    public void delTmpFile(){


        removeExcel(contTemPath);
    }

    /**
     * 每天凌晨定时删除一周前的合同数据
     */
    //@Scheduled(cron = "0 0 0 * * ?")
    public void delFile(){

        removeExcel(contPath);
    }

    /**
     * 删除某个文件夹下前一周的文件
     * @param url
     */
    public void removeExcel(String url){
        //计算一周前的日期
        Calendar cdweek = Calendar.getInstance();
        cdweek.add(Calendar.DATE, -7);
        Date d = cdweek.getTime();
        File fileBag =new File(url);
        String []filesName  =fileBag.list();
        for(int i=0;i<filesName.length;i++){
            //获得文件的创建时间
            File file = new File(url+ filesName[i]);
            Long time =file.lastModified();
            Calendar cd = Calendar.getInstance();
            cd.setTimeInMillis(time);
            //文件的最后一次修改的时间
            Date fileDate = cd.getTime();
            //一周前的时间与文件的创建时间比较，如果为true表示文件的创建时间早于一周前，那么需要删除
            boolean flag = fileDate.before(d);
            if(flag){
                file.delete();
            }
        }
    }
}
